home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / CRS / crs30.d81 / bookboot (.txt) < prev    next >
Commodore BASIC  |  2009-10-10  |  5KB  |  126 lines

  1. 3 REM: ********************************
  2. 4 REM: *MODIFIED BEYOND RECOGNITION BY*
  3. 5 REM: *LORD KATANA                   *
  4. 6 REM: *    HAPPY HUNTING-            *
  5. 7 REM: *          LK 7-8-92           * 8 REM: ********************************
  6. 10 REM   USE THIS PROGRAM TO LEARN HOW
  7. 20 REM   CREATE AND USE RELATIVE FILES.
  8. 30 REM   IT IS FLEXIBLE ENOUGH FOR YOU
  9. 40 REM   TO CUSTOMIZE IT FOR YOUR USE.
  10. 50 REM
  11. 60 PRINT"[147]*RELATIVE FILE DEMO*"
  12. 70 LL$=CHR$(13)  :REM  THIS IS THE FIELD DELIMITER USED WHEN WRITING RECORDS
  13. 80 OPEN15,8,15,"I0":CLOSE15 : REM  INITIALIZE THE DISK DRIVE.
  14. 90 INPUT"WHAT IS THE FILE NAME";NM$:  REM  MAXIMUM 16 CHARACTER NAME.
  15. 100 IFLEN(NM$)>0ANDLEN(NM$)<17THEN120
  16. 110 PRINT"[145][145][145]":GOTO90
  17. 120 INPUT"HOW MANY CHARACTERS IN EACH RECORD";LN  :REM    MAXIMUM 254.
  18. 130 LN=INT(LN):IFLN>0ANDLN<255THEN150
  19. 140 PRINT"[145][145][145]":GOTO120
  20. 150 PRINT
  21. 160 PRINT"DO YOU WANT TO"
  22. 170 PRINT"R[146]EAD A RECORD"
  23. 180 PRINT"W[146]RITE A RECORD"
  24. 190 PRINT"S[146]ET UP A FILE"
  25. 200 INPUT"OR Q[146]UIT";A$
  26. 210 IF A$="R" THEN 270
  27. 220 IF A$="W" THEN 510
  28. 230 IF A$="S" THEN 770
  29. 240 IF A$="Q" THEN 970
  30. 250 PRINT"TYPE AN 'R' 'W' 'S' OR 'Q'  ":GOTO160
  31. 260 :
  32. 270 REM  THIS SECTION POSITIONS TO AND READS A RECORD.
  33. 280 OPEN15,8,15           :REM OPEN THE COMMAND CHANNEL
  34. 290 GOSUB 1030 :REM  CHECK THE ERROR CHANNEL
  35. 300 OPEN8,8,8,"0:"+(NM$)+",L,"+CHR$(LN) :REM  OPEN FILE WITH RECORD LENGTH LN.
  36. 310 GOSUB 1030 :REM  CHECK THE ERROR CHANNEL
  37. 320 INPUT"READ WHAT RECORD NUMBER";RN
  38. 330 GOSUB980 :REM  CALCULATE THE LOW BYTE/HIGH BYTE POINTER.
  39. 340 PRINT#15,"P"+CHR$(96+8)+CHR$(RL)+CHR$(RH)+CHR$(1) :REM  POSITION COMMAND
  40. 350 GOSUB 1030 :REM  CHECK THE ERROR CHANNEL
  41. 360 IF E=50 THENPRINT"RECORD NUMBER TOO LARGE":GOTO450
  42. 370 INPUT#8,AA$,BB$,CC$,DD$,EE$,FF$:REM  READ IN THE FIELDS.
  43. 380 GOSUB 1030 :REM  CHECK THE ERROR CHANNEL
  44. 390 PRINT"RECORD NUMBER";RN;"CONTAINS:"
  45. 400 PRINT"    NAME: ";AA$
  46. 410 PRINT" ADDRESS: ";BB$
  47. 420 PRINT"    CITY: ";CC$
  48. 430 PRINT"   STATE: ";DD$
  49. 440 PRINT"ZIP CODE: ";EE$
  50. 445 PRINT"   PHONE: ";FF$
  51. 450 PRINT#15,"P"+CHR$(96+8)+CHR$(RL)+CHR$(RH)+CHR$(1):REM  REPOSIT'N FOR SAFETY
  52. 460 GOSUB 1030 :REM  CHECK THE ERROR CHANNEL
  53. 470 INPUT"READ ANOTHER RECORD";A$
  54. 480 IF A$="Y"THEN320
  55. 490 CLOSE8:CLOSE15:GOTO160 :REM  GO TO THE MENU
  56. 500 :
  57. 510 REM  THIS SECTION POSITIONS TO AND WRITES A RECORD.
  58. 520 OPEN15,8,15           :REM OPEN THE COMMAND CHANNEL
  59. 530 GOSUB 1030 :REM  CHECK THE ERROR CHANNEL
  60. 540 OPEN8,8,8,"0:"+(NM$)+",L,"+CHR$(LN) :REM  OPEN FILE WITH RECORD LENGTH LN.
  61. 550 GOSUB 1030 :REM  CHECK THE ERROR CHANNEL
  62. 560 INPUT"WRITE WHAT RECORD NUMBER";RN
  63. 570 INPUT"NAME";AA$       :REM  CHANGE THE PROMPTS TO ASK FOR THE DATA NEEDED
  64. 580 INPUT"ADDRESS";BB$    :REM  IN YOUR PARTICULAR APPLICATION.
  65. 590 INPUT"CITY";CC$       :REM  ANY NUMBER OF FIELDS CAN BE USED AS LONG AS
  66. 600 INPUT"STATE";DD$      :REM  THEY FIT WITHIN THE RECORD LENGTH YOU
  67. 610 INPUT"ZIP CODE";EE$   :REM  SPECIFIED WHEN CREATING THE FILE.
  68. 615 INPUT"   PHONE";FF$
  69. 620 RC$=AA$+LL$+BB$+LL$+CC$+LL$+DD$+LL$+EE$+LL$+FF$
  70. 630 REM  RC$ IS THE STRING CONTAINING ALL THE FIELDS FOR THE RECORD.
  71. 640 REM  REMEMBER THE MAX LENGTH FOR RC$ IS 254 CHARACTERS.
  72. 650 GOSUB980 :REM  CALCULATE THE LOW BYTE/HIGH BYTE POINTER.
  73. 660 PRINT#15,"P"+CHR$(96+8)+CHR$(RL)+CHR$(RH)+CHR$(1) :REM  POSITION COMMAND
  74. 670 GOSUB 1030 :REM  CHECK THE ERROR CHANNEL
  75. 680 IF E=50 THENPRINT"THE DOS WILL EXPAND THE FILE NOW"
  76. 690 PRINT#8,RC$  :REM  WRITE THE RECORD
  77. 700 GOSUB 1030 :REM  CHECK THE ERROR CHANNEL
  78. 710 PRINT#15,"P"+CHR$(96+8)+CHR$(RL)+CHR$(RH)+CHR$(1) :REM REPOSIT'N FOR SAFETY
  79. 720 GOSUB 1030 :REM  CHECK THE ERROR CHANNEL
  80. 730 INPUT"WRITE ANOTHER RECORD";A$
  81. 740 IF A$="Y"THEN550
  82. 750 CLOSE8:CLOSE15:GOTO160 :REM  GO TO THE MENU
  83. 760 :
  84. 770 REM  THIS SECTION POSITIONS TO AND WRITES THE HIGHEST RECORD NUMBER.
  85. 780 REM  ALTHOUGH NOT ENTIRELY NECESSARY, WRITING AND UPDATING LONG FILES
  86. 790 REM  IS SPEEDED WHEN THIS PROCEDURE IS USED.  THIS WILL CAUSE THE
  87. 800 REM  DOS SIDE SECTOR LIST TO BE CREATED ENTIRELY AT THE START RATHER
  88. 810 REM  THAN BEING APPENDED FOR EACH NEW HIGHER RECORD NUMBER.
  89. 820 OPEN15,8,15           :REM OPEN THE COMMAND CHANNEL
  90. 830 GOSUB 1030 :REM  CHECK THE ERROR CHANNEL
  91. 840 OPEN8,8,8,"0:"+(NM$)+",L,"+CHR$(LN) :REM  OPEN FILE WITH RECORD LENGTH LN.
  92. 850 GOSUB 1030 :REM  CHECK THE ERROR CHANNEL
  93. 860 PRINT"WHAT IS THE HIGHEST RECORD NUMBER"
  94. 870 INPUT"YOU WANT TO USE";RN
  95. 880 GOSUB980 :REM  CALCULATE THE LOW BYTE/HIGH BYTE POINTER.
  96. 890 PRINT#15,"P"+CHR$(96+8)+CHR$(RL)+CHR$(RH)+CHR$(1) :REM  POSITION COMMAND
  97. 900 GOSUB 1030 :REM  CHECK THE ERROR CHANNEL
  98. 910 IF E=50 THENPRINT"THE DOS WILL EXPAND THE FILE NOW"
  99. 920 PRINT#8,CHR$(255) :REM
  100. 930 GOSUB 1030 :REM  CHECK THE ERROR CHANNEL
  101. 940 PRINT#15,"P"+CHR$(96+8)+CHR$(RL)+CHR$(RH)+CHR$(1) :REM REPOSIT'N FOR SAFETY
  102. 950 GOSUB 1030 :REM  CHECK THE ERROR CHANNEL
  103. 960 CLOSE8:CLOSE15:GOTO160 :REM  GO TO THE MENU
  104. 970 CLOSE8:CLOSE15:END
  105. 980 REM  THIS SUBROUTINE CALCULATES THE RECORD NUMBER POINTER
  106. 990 REM  IN THE LOW BYTE/HIGH BYTE FORMAT.
  107. 1000 REM  RN (RECORD NUMBER) IS USED TO CALCULATE RL AND RH.
  108. 1010 RH=INT(RN/256):RL=RN-(256*RH) : REM  RL IS LOW -- RH IS HIGH.
  109. 1020 RETURN
  110. 1030 REM   THIS IS THE DISK DRIVE ERROR CHECKING SUBROUTINE.
  111. 1040 INPUT#15,E,E$,A,B   :REM  READ THE ERROR CHANNEL.
  112. 1050 IF E=0 THEN RETURN  :REM  THERE IS NO ERROR IF E=0.
  113. 1060 REM   E=50 (RECORD NOT PRESENT) ANY TIME A RECORD NUMBER POINTER IS
  114. 1070 REM   POSITIONED BEYOND THE CURRENT HIGHEST RECORD NUMBER.
  115. 1080 IF E=50 THEN RETURN
  116. 1090 IF E<>51 THEN 1130
  117. 1100 PRINT:PRINT"ERROR #51, RECORD TOO LONG."
  118. 1110 PRINT"MAXIMUM LENGTH IS"LN"CHARACTERS."
  119. 1120 PRINT"RETURN COUNTS AS A CHARACTER.":RETURN
  120. 1130 PRINT"THERE IS AN I/O PROBLEM"
  121. 1140 PRINT"ERROR NUMBER IS";E,E$
  122. 1150 PRINT"AT TRACK";A;"   SECTOR";B
  123. 1160 IF E=70 THENPRINT"MAKE SURE YOU INPUT THE CORRECT RECORD"
  124. 1170 IF E=70 THENPRINT"LENGTH FOR AN EXISTING FILE NAME."
  125. 1180 CLOSE8:CLOSE15:END
  126.